
/**
 * 
 */
package com.zsrt.day20170410;

import java.util.Scanner;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.zsrt.utils.ArrayUtil;

/**
 * String数组的增删改查
 * @author jmj
 * @date 2017年4月10日
 * @time 下午2:16:55
 */
public class ShuZu {
	private Scanner in ;
	private String[] class1704={"贾梦菊","靳志辉","何小强","罗智壕","张嘉源"};
	
	@Before
	public void before (){
		System.out.println("在所有方法之前执行的方法：");
		in = new Scanner(System.in);
	}
	
	@After
	public void after(){
		System.out.println();
		System.out.println("在所有方法后面执行的方法");
		in.close();
	}
	
	/**
	 * 数组的增加测试
	 * @throws Exception
	 */
	@Test
	public void shuZuAddTest() throws Exception {
		System.out.println("请输入要添加的名字：");
		String name= in.nextLine();
		shuZuAdd(class1704,name);		
	}
	
	/**
	 * 数组的增加
	 * @param arrays
	 * @param name
	 */
	public void shuZuAdd(String[] arrays,String name){
		String[] arrays2 =new String[arrays.length+1];
		//要增加的元素之前的数值不变
		for(int i =0;i<arrays.length;i++){
			arrays2[i]=arrays[i];
		}
		//增加元素
		arrays2[arrays.length]=name;
		ArrayUtil.printArray(arrays2);
	}
	
	/**
	 * 数组的查询测试
	 * @throws Exception
	 */
	@Test
	public void shuZuSearchTest() throws Exception {
		System.out.println("请输入要查询的名字：");
		String name= in.nextLine();
		int index = shuZuSearch(class1704,name);
		//判断该学生在不在数组中
		if(index>-1){
			System.out.println("该学生已经存在"+"其下标为"+index);
			
		}else{
			System.out.println("该学生在数组中不存在");
			
		}
	}
	/**
	 * 数组的查询
	 * @param array
	 * @param name
	 */
	public int shuZuSearch(String[] array,String name){
		
		int index =-1;
		for(int i =0;i<array.length;i++){
			//判断元素是否在数组中存在
			if(array[i].equals(name)){
				index = i;
			}
	    }
		return index;
	}
	
	/**
	 * 数组的修改测试
	 * @throws Exception
	 */
	@Test
	public void updateTest() throws Exception {
		System.out.println("请输入要修改的名字：");
		String oldname = in.nextLine();
		
		System.out.println("请输入修改后的名字：");
		String newname = in.nextLine();
		update(class1704,oldname,newname);
	}
	
	/**
	 * 数组的修改
	 * @param array
	 * @param oldname
	 * @param newname
	 * @param index
	 */
	public void update(String[] array,String oldname,String newname){
		int index = shuZuSearch(array,oldname);
		//判断元素是否存在数组中
		if(index>-1){
			//存在就进行改变
			array[index]=newname;
			ArrayUtil.printArray(array);
		}else{
			System.out.println("该学生不存在");
		}
	}
	
	@Test
	public void deleteTest() throws Exception {
		System.out.println("请输入要删除的名字：");
		String dname = in.nextLine();
		delete(class1704,dname);
		
	}
	/**
	 * 在数组中删除某个元素
	 * @param array
	 * @param dname
	 */
	public void delete(String[] array,String dname){
		int index = shuZuSearch( array, dname);
		String[] newArray = new String[array.length -1];
		if(index>-1){
			System.out.println("该学生在数组中存在");
			//改下标之前的数字不用改变
			for(int i =0;i<array.length;i++){
				if(i<index){
					newArray[i]=array[i];
				//删除查找的元素
				}else if(i==index){
					continue;
		        //被删除的后面的元素往前进一位
				}else{
					newArray[i-1]=array[i];
				}
			}
		}
		ArrayUtil.printArray(newArray);
		
	}
}
